package demo_0512;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//public class MoveBall extends JPanel implements ActionListener {
//    int x = 10;
//    int y = 10;
//    int deltax = 10;
//    int deltay = 10;
//    Thread thread = new Ball();
//
//    public static void main(String[] args) {
//        JFrame frame = new JFrame("移动小球");
//        MoveBall panel = new MoveBall();
//        frame.add(panel);
//        frame.setSize(400, 400);
//        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        frame.setVisible(true);
//        panel.thread.start();
//    }
//
//    @Override
//    protected void paintComponent(Graphics g) {
//        super.paintComponent(g);
//        g.setColor(Color.RED);
//        g.fillOval(x, y, 30, 30);
//    }
//
//    @Override
//    public void actionPerformed(ActionEvent e) {
//        thread.start();
//    }
//
//    class Ball extends Thread {
//        @Override
//        public void run() {
//            while(true) {
//                x += deltax;
//                y += deltay;
//
//                // 边界检测
//                if(x <= 0 || x >= getWidth()-30) deltax = -deltax;
//                if(y <= 0 || y >= getHeight()-30) deltay = -deltay;
//
//                repaint();
//                try {
//                    Thread.sleep(10);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//}




//移动小球
public class MoveBall extends JPanel implements ActionListener {
    int x = 10;
    int y = 10;
    int deltax = 10;
    int deltay = 10;
    Thread thread = new Move();

    public static void main(String[] args) {
        JFrame frame = new JFrame("移动小球");
        frame.setSize(800,800);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MoveBall ballpanel = new MoveBall();
        frame.add(ballpanel);
        JButton jButton = new JButton("启动小球");
        frame.add(jButton,BorderLayout.SOUTH);
        jButton.addActionListener(ballpanel);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        thread.start();
    }
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.fillOval(x, y, 30, 30);
    }

    class Move extends Thread{
        @Override
        public void run() {
            while(true){
                x += deltax;
                y += deltay;
                if(x <= 0 || x >= getWidth()-30) deltax = -deltax;
                if(y <= 0 || y >= getHeight()-30) deltay = -deltay;
                repaint();
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}